Orchestrating execution of a series of actions requested to be performed via an automated assistant

ABSTRACT

Implementations are set forth herein for creating an order of execution for actions that were requested by a user, via a spoken utterance to an automated assistant. The order of execution for the requested actions can be based on how each requested action can, or is predicted to, affect other requested actions. In some implementations, an order of execution for a series of actions can be determined based on an output of a machine learning model, such as a model that has been trained according to supervised learning. A particular order of execution can be selected to mitigate waste of processing, memory, and network resources—at least relative to other possible orders of execution. Using interaction data that characterizes past performances of automated assistants, certain orders of execution can be adapted over time, thereby allowing the automated assistant to learn from past interactions with one or more users.

BACKGROUND

Humans may engage in human-to-computer dialogs with interactive softwareapplications referred to herein as “automated assistants” (also referredto as “digital agents,” “chatbots,” “interactive personal assistants,”“intelligent personal assistants,” “assistant applications,”“conversational agents,” etc.). For example, humans (which when theyinteract with automated assistants may be referred to as “users”) mayprovide commands and/or requests to an automated assistant using spokennatural language input (i.e. utterances), which may in some cases beconverted into text and then processed, and/or by providing textual(e.g., typed) natural language input. An automated assistant responds toa request by providing responsive user interface output, which caninclude audible and/or visual user interface output.

In many cases, an automated assistant may exclusively execute actionsaccording to an order that the user set forth when specifying therequested actions. This can prove problematic, particularly when theuser provides a single natural language input that includes a requestfor multiple different actions to be performed. For instance, the usercan set forth a request for a series of actions to be performed, in anorder that the user may not have considered fully before speaking therequest. As a result, certain actions that might otherwise be performedrelatively quickly may be delayed inadvertently, thereby introducinglatency and other computational inefficiencies into certain performanceaspects of the automated assistant.

As an example, if the user requests a media stream to be provided and aweb search to be performed, the automated assistant may consequentlyprioritize providing the media stream, thereby delaying performance ofthe web query—which can otherwise be performed relatively quickly inmany instances. Should the user forget about the web query while thecontinuous media playback is being provided, the user may subsequentlyreissue the same request, thereby wasting computational resources onprocessing the duplicative request. Furthermore, when the automatedassistant exclusively relies on the user to indicate an order for thesequence of actions to be performed, certain processes, such asdownloading, caching, and/or rendering data, may not be sequentiallyarranged for execution in an optimal way.

SUMMARY

Described herein are implementations related to systems, methods, andapparatuses for creating an order of execution for multiple requestedautomated assistant actions. Specifically, the actions can be requestedby a user via a single spoken utterance, and the order of execution forthe actions can be arranged according to how each requested action can,or is predicted to, affect another requested action. For instance, aspoken utterance can include a request for multiple actions to beperformed, and at least one action of the multiple actions cancorrespond to a dialogue-initiating query. If the dialogue-initiatingquery was to be prioritized ahead of the other multiple actions,performance of the other actions would be postponed until the dialoguebetween the user and the automated assistant was completed. Therefore,in order to mitigate delay times between a request and performance of anaction, the dialogue-initiating query can be assigned as the last actionto be completed of the multiple requested actions. A user canconsequently submit commands to a device or system that are theninterpreted for more efficient performance. That is, the user need notreconcile the most efficient form of command input with most efficientform of command performance since the order of execution can bedetermined by the system, method or apparatus. Accordingly the ease andefficiency of interaction is increased.

As an example, the user can provide a spoken utterance such as,“Assistant, set an alarm for tomorrow and also could you tell me theweather for tomorrow?” The automated assistant can receive the spokenutterance and determine that the spoken utterance includes a firstrequest for setting an alarm and a second request for providing aweather report. Furthermore, the automated assistant can determine thatsetting the alarm requires supplemental information to be provided bythe user, and, therefore, further dialogue to be processed. Forinstance, the automated assistant may have to generate a naturallanguage output that includes a request for a time for the alarm, andthe automated assistant may have to process a subsequent input from theuser that identifies the time for the alarm. Additionally, the automatedassistant can determine that providing the weather report requiressubmitting a request over the internet, receiving weather data inresponse, and converting the weather data to a natural language outputfor the user. Therefore, at least based on the first requestnecessitating further information from the user and the second requestnot necessitating any further dialogue with the user, the automatedassistant can order the execution of the actions by fulfilling thesecond request before fulfilling the first request. In other words, theuser will receive the weather report before participating in a dialoguesession for setting up the alarm, at least based on the setting up ofthe alarm requiring further information from the user.

In some implementations, actions requested to be performed by a user canbe arranged according to whether one or more of the requested actionsresult in a lasting output, or are predicted to result in a lastingoutput relative to the other requested actions. In other words, actionsto be performed at the request of the user can be arranged according towhether one or more of the requested actions would result in an outputfrom a particular modality that would interfere with performance of oneor more of the other requested actions. For example, the user canprovide a spoken utterance such as, “Assistant, play my morning playlistand tell me the weather.” In response to the automated assistantreceiving the spoken utterance, the automated assistant can identify afirst requested action of playing the morning playlist and a secondrequested action of providing the user with a weather report.Furthermore, the automated assistant can determine that providing theweather report would result in an audible weather report being providedfor a first period of time, and that playing the morning playlist wouldresult in audible music being provided for a second period of time.Additionally, the automated assistant can determine that the secondperiod of time is greater than the first period of time, therefore, theautomated assistant can order the execution of actions such that thesecond requested action is performed before the first requested action.In other words, because providing the weather report to the user wouldtake less time than providing the morning playlist, the automatedassistant can prioritize the weather report over playing the music ofthe morning playlist. In this way, prioritization of the actions can bebased on whether an estimated amount of time of performance of oneparticular action extends beyond that of another particular action.

In some implementations, when the user provides a spoken utterance thatincludes a request to playback multiple media items, the order ofactions for playing back the media items can be arranged according to anorder specified in the spoken utterance. For instance, when the userprovides a spoken utterance, such as, “Assistant, play the songs ‘ForOnce in My Life’ and “I Was Made to Love Her.” In response, theautomated assistant can play each of the two songs in the order that theuser specified, whether or not the user intentionally specified theorder or not. However, in some implementations, the user can explicitlyspecify that one or more actions be performed after playback of one ormore media items. For instance, the user can provide a spoken utterancesuch as, “Assistant, play the song ‘Superstition’ and then remind me toset up the security alarm.” In response, because the user specifiedparticular conditions for performance of the actions, the automatedassistant can receive this spoken utterance and cause playback of thespecified media item followed by providing a reminder to the user to setup their security alarm.

In some implementations, when the user provides a spoken utterance thatincludes a first action of scheduling a particular task or event, and asecond action that at least partially depends on a result of the firstaction being completed, the automated assistant can delay the secondaction until the first action is completed. For instance, the user canprovide a spoken utterance such as, “Assistant, book me a ticket for amovie this Friday, and then book a table at a restaurant after themovie.” In response to receiving the spoken utterance, the automatedassistant can determine parameters necessary to complete each action.For instance, in order to book a movie ticket, the automated assistantneeds to determine play times for the movie at the specified date.Furthermore, in order to book a table at the restaurant, the automatedassistant needs a parameter for a time for booking the reservation atthe restaurant. However, in order to mitigate an amount of dialogueexchanged, and to preserve computational and/or network resources, theautomated assistant can determine an estimated reservation time for therestaurant based on: a time of the movie, a length of the movie, adistance of a movie theater to the restaurant, and/or any other factorsthat can influence when a reservation at a restaurant should be bookedfor.

In some implementations, the user can provide a spoken utterance thatincludes commanding the automated assistant to open a particularapplication and perform a particular action using the application.However, the user may provide the spoken utterance in a way that isagnostic relative to the application that will perform the action. Forinstance, the user can provide a spoken utterance such as, “Assistantopen my auction application and tell me how much a box of avocado seedsare.” In response, the automated assistant can determine that the actionof opening the auction application and providing a price of certaingoods are associated with each other. In some implementations, theautomated assistant can quantify a correlation between both requests.When the quantified correlation satisfies a particular threshold, theautomated assistant can attempt to use the application identified by theuser to perform another action requested by the user. In this way, notonly would the order of execution be determined by the automatedassistant—assuming that the application would need to be opened beforeperforming action, but also the ambiguity regarding the application tobe used to perform the action can be resolved by the automatedassistant.

In some implementations, reordering of execution of requested actionscan be learned over time. For instance, in some implementations,feedback from the user can be used to learn whether the automatedassistant ordered performance of certain requested actions accurately orinaccurately. For example, when the user provides a spoken utterancethat includes a request for performing multiple actions, and theautomated assistant begins performance of an action that the user didnot intend to be prioritized over other, the user can provide anindication that performance of the actions has been initializedincorrectly. The user can interrupt the performance of the actions byproviding an input to a display panel for interrupting actions beingperformed by the automated assistant, and/or provide a spoken utterancesuch as, “stop,” for stopping an ongoing performance of the actions.Thereafter, such feedback or input can be relied upon to correct anordering of the actions when they are again requested by the user.

In some implementations, historical interaction data that characterizeinteractions between the user and the automated assistant can beanalyzed to determine particular actions that resulted in requests foradditional input from the user. In this way, the automated assistant canidentify actions that typically resulted in further interaction andthose that did not. Thereafter, when the user provides a spokenutterance for requesting that certain actions be performed, theautomated assistant can prioritize or not prioritize those particularactions that resulted in additional input being requested from the user.

In some implementations, historical interaction data that characterizeinteractions between various users and their respective automatedassistants can be used to determine an ordering of actions to beperformed in response to a spoken utterance. For example, a user canprovide a spoken utterance such as, “Assistant, play my morning playlistand tell me the weather.” In response, the automated assistant canaccess, or otherwise be trained based on, historical interaction datathat characterize previous instances when one or more users requestedthose particular actions. Specifically, the automated assistant candetermine that users more often request a weather report beforerequesting music in the morning. Therefore, in response to receiving thespoken utterance from the user, the automated assistant can re-order theactions requested, such that the weather report is provided before themorning playlist. In some implementations, the historical interactiondata can indicate, or otherwise characterize, instances in which usersrequested both actions in a single spoken utterance and/or requestedboth actions in separate spoken utterances and/or at separate times (butoptionally within a threshold time of one another), but none-the-lessrequested both actions be performed more frequently in a particularorder. The automated assistant can therefore identify the mostfrequently performed order of execution for the actions, and re-orderthe performance of any requested actions accordingly.

In some implementations, when a user provides a spoken utterance thatincludes a request for multiple actions to be performed, and one actioncorresponds to a request for a personal message, the personal messagecan be delayed until any other actions are completed. For instance, whenthe user provides a spoken utterance such as, “Talk to you tomorrow, andplease set an alarm for 8 A.M. tomorrow,” the automated assistant canreceive this spoken utterance, and determine that the spoken utteranceincludes a request for a personal message and a request for an alarm tobe configured. In response, the automated assistant can prioritizesetting up the alarm over providing the personal message. Therefore,when the automated assistant responds to the spoken utterance, theautomated assistant can cause a natural language output to be provided,such as, “Ok, I set the alarm. Good night, Jim.” In this way, actionshaving higher utility can be prioritized over actions that may nototherwise affect a schedule of the user, an environment of the user, adevice accessible to the user, and/or any other feature associated withthe user.

In some implementations, a method implemented by one or more processorsis set forth as including operations such as receiving audio data thatthat characterizes a spoken utterance from a user, wherein the spokenutterance includes a request for multiple actions to be performed via anautomated assistant and the spoken utterance is received at an automatedassistant interface of a computing device. The operations can furtherinclude identifying, based on the audio data characterizing the spokenutterance, each action of the multiple actions requested by the user tobe performed via the automated assistant, wherein requests for themultiple actions to be performed are set forth in the spoken utteranceaccording to a first order of actions. The operations can furtherinclude determining, based on identifying each action of the multipleactions, an execution characteristic of each action of the multipleactions, wherein a particular execution characteristic of an action ofthe multiple actions affects a temporal aspect of execution of themultiple actions when the multiple actions are executed according to thefirst order of actions by one or more computing devices, and whereindetermining the execution characteristic of each action of the multipleactions includes accessing data that is generated based on pastexecutions of one or more actions of the multiple actions at thecomputing device and/or a separate computing device. The operations canfurther include determining, based on the particular executioncharacteristic of the action of the multiple actions, a second order ofactions for executing the multiple actions, wherein the second order ofactions, when executed by the one or more computing devices, causes theone or more computing devices to exhibit a different the temporal aspectof execution of the multiple actions. The operations can further includecausing, based on determining the second order of actions, the automatedassistant to initialize performance of one or more actions of themultiple actions according to the second order of actions.

In some implementations, determining the second order of actionsincludes: processing output data from a trained neural network model,the trained neural network model having been trained using historicalinteraction data that characterizes at least one or more previousinteractions between the user and the automated assistant. In someimplementations, the historical interaction data further characterizesmultiple interactions involving other users that have previouslyinteracted with the automated assistant in furtherance of causing theautomated assistant to perform various sequences of actions. In someimplementations, the historical interaction data further characterizesfeedback provided by the user to the automated assistant in order toinfluence an order of execution of previously requested actions. In someimplementations, the particular execution characteristic of the actionof the multiple actions characterizes the action as a dialog initiatingaction, and a supplemental dialog session between the user and theautomated assistant is to occur for the user to identify a value to beassigned to a parameter of the action.

In some implementations, the temporal aspect of the execution of themultiple actions, according to the first order of actions, includes atleast an estimated time of execution for one or more actions of themultiple actions, and the method further comprises: determining that thesupplemental dialog session is predicted to extend the estimated time ofexecution for the one or more actions when the multiple actions areexecuted according to the first order of actions. In someimplementations, another action of the multiple actions includesproviding continuous media playback, and the second order of the actionsprioritizes the dialog initiating action over the other action thatincludes providing the continuous media playback. In someimplementations, causing the automated assistant to initializeperformance of the at least one action of the multiple actions accordingto the second order of actions includes: generating a natural languageoutput that provides the user with an indication that the at least oneaction of the multiple actions has been initialized according to thesecond order of actions.

In other implementations, a method implemented by one or more processorsis set forth as including operations such as processing audio data thatthat characterizes a spoken utterance from a user requesting that anautomated assistant perform multiple actions, wherein the multipleactions are characterized by the user in the spoken utterance accordinga first order of actions. The method can further include determining,based on processing the audio data, an action classification for eachaction of the multiple actions requested by the user, wherein aparticular action classification of a particular action of the multipleactions includes a dialog initiating action that is executed accordingto at least one parameter. The method can further include determiningwhether a value for the at least one parameter is specified by the userin the spoken utterance. The method can further include, when the valuefor the at least one parameter was unspecified in the spoken utterance:generating a second order of actions for the multiple actions, whereinthe second order of actions causes the dialog initiating action to havea reduced priority relative to another action of the multiple actionsbased on the value for at least one parameter being unspecified in thespoken utterance.

The method can further include, when the at least one parameter isspecified in the spoken utterance: generating a third order of actionsfor the multiple actions, wherein the third order of actions causes thedialog initiating action to have priority that is unaffected by the userspecifying the value for at least one parameter in the spoken utterance.The method can further include, determining the action classificationincludes determining, each action of the multiple actions, whether theaction corresponds to a continuous playback of media, and the methodfurther comprises: when a requested action of the multiple actionsincludes a continuous playback of media action: generating the secondorder of actions or the third order of actions to prioritize therequested action such that the requested action is executed later intime relative to the other action of the multiple actions. The methodcan further include determining whether the user explicitly specified atemporal condition for executing at least one action of the multipleactions; and when the user has explicitly specified the temporalcondition for executing the at least one action of the multiple actions:generating the second order of actions or the third order of actions tocomply with the temporal condition for executing at least one action ofthe multiple actions. The method can further include wherein theautomated assistant is configured to override the second order ofactions or the third order of actions according to the temporalcondition when the particular action is the at least one actionexplicitly requested by the user to be affected by the temporalcondition.

In yet other implementations, a method implemented by one or moreprocessors is set forth as including operations such as determining thata user has provided a spoken utterance that includes requests for anautomated assistant to perform multiple actions that include a firsttype of action and a second type of action, wherein the automatedassistant is accessible to the user via an automated assistant interfaceof a computing device. The method can further include generating, inresponse to the user providing the spoken utterance, an estimated delayfor the first type of action when the second type of action isprioritized over the first type of action during execution of themultiple actions. The method can further include determining, based onthe estimated delay, whether the estimated delay for the first type ofaction satisfies a threshold, wherein, when the estimated delay for thefirst type of action satisfies the threshold, execution of the firsttype of action is prioritized over the second type of action. The methodcan further include generating, based on whether the estimated delaysatisfies the threshold, a preferred order of execution for the multipleactions requested by the user. The method can further include causingthe automated assistant to initialize performance of the multipleactions according to the preferred order of execution.

In some implementations, the method can further include determining anaction classification for each action of the multiple actions requestedby the user, wherein the automated assistant is configured to prioritizeat least one particular classification of actions over at least oneother classification of actions. In some implementations, the first typeof action includes a dialog initiating action and the second type ofaction includes a media playback action. In some implementations, themedia playback action is configured to be at least partially performedat a separate computing device, and the method further comprises: whenthe dialog initiating action is prioritized over the media playbackaction: causing the dialogue initiating action to be initialized at thecomputing device simultaneous to causing the separate device toinitialize an application for executing the media playback action. Insome implementations, the method can further include, when the mediaplayback action is prioritized over the dialog initiating action:causing the automated assistant to provide a natural language outputcorresponding to dialogue in furtherance of completing the dialoginitiating action, and when the dialogue initiating action is completed:causing the automated assistant to initialize performance of the mediaplayback action at the computing device or the separate computingdevice.

In some implementations, the dialog initiating action, when executed,includes initializing a dialog session between the user and theautomated assistant in order for the user to identify a value to beassigned to a parameter in furtherance of completing the dialoginitiating action. In some implementations, the media playback action,when executed, includes initializing playback of media that isaccessible via one or more files, and the estimated delay is based on atotal of file lengths for the one or more files. In someimplementations, the media playback action, when executed, includesinitializing playback of media that is accessible via one or morenetwork sources, and the estimated delay is based on time data that isaccessible via the one or more network sources.

Other implementations may include a non-transitory computer readablestorage medium storing instructions executable by one or more processors(e.g., central processing unit(s) (CPU(s)), graphics processing unit(s)(GPU(s)), and/or tensor processing unit(s) (TPU(s)) to perform a methodsuch as one or more of the methods described above and/or elsewhereherein. Yet other implementations may include a system of one or morecomputers and/or one or more robots that include one or more processorsoperable to execute stored instructions to perform a method such as oneor more of the methods described above and/or elsewhere herein.

It should be appreciated that all combinations of the foregoing conceptsand additional concepts described in greater detail herein arecontemplated as being part of the subject matter disclosed herein. Forexample, all combinations of claimed subject matter appearing at the endof this disclosure are contemplated as being part of the subject matterdisclosed herein.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a view of a user invoking an automated assistantusing a spoken utterance in order to cause the automated assistant toperform a series of actions.

FIG. 2 illustrates a view of a user invoking an automated assistant toperform multiple different actions, and causing the automated assistantto rearrange the order of the actions.

FIG. 3 illustrates a system for modifying an order of execution for aset of actions requested to be performed via an automated assistant inorder to eliminate waste of processing and network resources.

FIG. 4 illustrates a method for determining an order of actions for anautomated assistant to perform, at least according to processing using atrained machine learning model.

FIG. 5 illustrates a method for arranging a sequence of actionsaccording to a classification of the actions.

FIG. 6 is a block diagram of an example computer system.

DETAILED DESCRIPTION

FIG. 1 illustrates a view 100 of a user 108 invoking an automatedassistant using a spoken utterance 102 in order to cause the automatedassistant to perform a series of actions. Specifically, the view 100provides an illustration of how the automated assistant can modify anorder of a requested series of actions in order to provide a moreefficient use of computational resources. For example, the user 108 canbe located within an area 106 of their home, which can include a clientdevice 124 and another device 110. Each device of the client device 124and the other device 110 can provide access to an automated assistant.For instance, the client device 124 can provide access to a clientautomated assistant 126 via one or more assistant interfaces 128. Anassistant interface 128 can be one or more devices, or groups ofdevices, capable of receiving inputs from the user 108 and/or providingoutputs to the user 108. For instance, an assistant interface 128 caninclude one or more microphones and one or more audio speakers.Alternatively, or additionally, an assistant interface 128 can includeone or more touch display panels and/or one or more cameras. Inputs andoutputs can be generated for the client automated assistant 126 at theclient device 124 and/or a remote computing device 118, such as a serverdevice 120. The server device 120 can include a server automatedassistant 122, which can provide support for input and outputprocessing, as discussed herein.

When the user 108 provides a spoken utterance 102 that includes a spokenutterance for the automated assistant (i.e., the client automatedassistant 126 and/or the server automated assistant 122) to performmultiple different actions, the client automated assistant 126 canreceive the spoken utterance 102 and determine an order for the multipledifferent actions. For instance, the spoken utterance 102 can be,“Assistant, play my evening playlist, set an alarm, and tell me theweather for tomorrow.” The spoken utterance 102 can describe therequested actions in a first order, which sets forth playing the eveningplaylist first, then setting the alarm, and then providing a weatherreport. However, in response to receiving the spoken utterance 102, theautomated assistant can determine a different order, should anotherorder of execution be more efficient or otherwise more suitable for theuser 108.

The client automated assistant 126 and/or client device 124 can convertthe spoken utterance 102 into audio data that can be transmitted fromthe client device 124 to the server device 120 via a network 130 (e.g.,the internet). The server device 120 and/or the server automatedassistant 122 can convert the audio data into textual data, and thenparse the textual data to identify the actions requested by the user108, as discussed herein. In some implementations, identifiers for theactions can be processed using a trained machine learning model, togenerate output that indicates a second order of execution for theactions. In other implementations, classifications for the requestedactions can be identified, and based on the classifications of actionsrequested by the user, a second order of execution for the actions canbe generated.

Additionally, or alternatively, contextual data associated with the user108, the area 106, and/or any other features that can be associated withthe user 108, can also be processed when determining the second order ofexecution for the actions. For instance, the contextual data canindicate that the user 108 is located within an area 106 that includesthe client device 124, such as a standalone speaker device 112, andanother device 110, such as a touch display device. Therefore, inresponse to receiving the spoken utterance 102 and accessing thecontextual data, the automated assistant can determine an order ofactions to be performed by the client device 124 and an order of actionsto be performed by the other device 110. For instance, the automatedassistant can cause the client device 124 to be assigned the actions ofsetting the alarm and playing the evening playlist. Furthermore, theautomated assistant can cause the other device 110 to be assigned theaction of providing the weather report for tomorrow. Specifically, theautomated assistant can cause the weather report to be displayed at thedisplay panel of the other device 110, thereby mitigating interruptionsto the dialogue session, that would occur between the user 108 and theautomated assistant, for setting up the alarm.

In some implementations, identifiers for the actions requested in thespoken utterance 102 can be processed using the machine learning model,along with other data that is associated with the actions. For instance,the other data can include a type of device that is receiving the spokenutterance 102, a time of day that the spoken utterance 102 was received,an identifier for the user 108 that provided the spoken utterance 102, atotal amount of execution time or estimated amount of execution time peraction of the requested actions, and/or any other data that can besuitable for characterizing a feature of a requested action. Based onthe processed one or more inputs, the machine learning model can beutilized to generate an output characterizing an order for execution ofthe requested actions. The output generated using the machine learningmodel can be shared with the client device 124 and/or the other device110.

In response to receiving an order of execution generated by the serverdevice 120, and/or otherwise generated in response to receiving thespoken utterance 102, the client device 124 can initialize performanceof the actions. For instance, the client automated assistant 126 canprovide a natural language output 104 in furtherance of completing theactions. As indicated in FIG. 1 , the request for a weather report canbe prioritized over setting an alarm, and setting the alarm can beprioritized over playing the evening playlist. Therefore, theaforementioned order of actions can cause the natural language output104 to initially incorporate a weather report. Specifically, the naturallanguage output 104 can include a weather report such as, “The weatherfor tomorrow is sunny, with a high of 75 degrees and a low of 66degrees.” Upon completion of the first action (e.g., the weatherreport), the client automated assistant 126 can initialize performanceof the second action (e.g., setting alarm for the following day). Whenperforming the second action, the client automated assistant 126 caninitialize a dialogue session with the user 108 by providing a naturallanguage output such as, “What time would you like to set your alarm fortomorrow?” and response, the user 108 can provide a spoken utterance 102such as, “7:00 A.M., please.”

The client automated assistant 126 can, in response, provide anacknowledgement of the spoken utterance 102 by providing a naturallanguage output 104 such as, “Ok.” Thereafter, and in response tocompleting the second action, the client automated assistant 126 caninitialize performance of the third action in the second order ofactions. Specifically, the client automated assistant 126 can initializeplayback of an evening playlist, which can be a list of songs set by theuser 108 to be preferably played during an evening. Therefore, despitethe user 108 providing a request for actions to be performed accordingto a first order of execution, the automated assistant can rearrange theorder of execution in order to ensure that execution time for eachaction is minimized. For instance, should the evening playlist have beenexecuted first, setting the alarm and providing the weather report wouldhave been delayed until the end of the playlist was reached.Furthermore, if playback of the playlist would have extended into thefollowing day, the request for the weather for “tomorrow” would havebeen performed the following day, thereby changing the targeted day ofthe weather report to a subsequent day. This change to the targeted daywould have amounted to a waste of computational resources, especially ifthe user had to provide another spoken utterance in order to specify,again, the exact day that the weather report should correspond to.

FIG. 2 illustrates a view 200 of a user 208 invoking an automatedassistant to perform multiple different actions, and causing theautomated assistant to rearrange the order of the actions. For instance,the user 208 can provide a spoken utterance 202 such as, “Assistant,play my show, set an alarm, and tell me the weather for tomorrow.” Therequest to “play my show” can correspond to a continuous media playbackaction, which can involve one or more subtasks, such as downloading andcaching portions of the media, and subsequently initializing playback ofthe downloaded media. Furthermore, the request to “set an alarm” caninclude one or more subtasks such as generating a natural languageoutput, processing a subsequent natural language input from the user,and setting the alarm based on content of the natural language inputfrom the user.

In various implementations, in order to preserve computational resourcesand eliminate latency when performing the multiple different actions,the order for the actions, and corresponding subtasks, can be determinedutilizing a machine learning model, and/or one or more modules capableof determining an order of execution for particular actions. In someimplementations, the machine learning model can be trained usingsupervised learning. In some of those implementations, positive trainingexamples are utilized that include, as training example input: dataidentifying the automated assistant actions in a request and optionallyone or more contextual values. The data identifying the automatedassistant actions can include, for example, an intent and optionallyparameter(s) for the action. For example, for an action of streaming“show X” on a smart television, the intent can be “stream media,” andthe parameters can include a type of media (e.g., a television showtype), a duration of the media (e.g., 30 minutes), and/or a targetdevice for receiving the stream. The one or more contextual values caninclude, for example, a device via which the request was received, atime of the day, a day of the week, etc. The training example inputs canoptionally be of a fixed dimension that is dictated by a maximum numberof actions for which the machine learning model is being trained, andcan include “null” values in training examples that have less than themaximum number of actions. For example, the maximum number of actionscan be five, and for a training example input that includes threeactions in a request, data identifying each of the three actions can beincluded in the training example input, and null data can be providedfor the remaining two actions.

The positive training examples can further include, as training exampleoutput: data identifying a particular order for the actions identifiedin the training example input. The particular order is a preferredorder, which can be determined as the preferred order utilizing varioustechniques. For example, a particular order of “Action3, Action1,Action2” for a training example output of a positive training examplecan be based on human labeling (e.g., an explicit labeling of the order“Action3, Action1, Action 2”), past occurrences of users explicitlyspecifying the preferred order in a single request (e.g., “Assistant,first perform Action3, then Action1, and then Action 2”), and/or pastoccurrences of users specifying the preferred order in separate requeststhat are temporally proximal to one another (e.g., “Assistant, performAction3”, followed within one minute by “Assistant, perform Action1”,and followed within one minute by “Assistant Action 2”). Also, forexample, a particular order of “Action3, Action1, Action2” for atraining example output of a positive training example can be based onpast occurrences of performing the actions in the particular order beingmore computationally efficient than performing the actions in anyalternative particular order. For example the particular order of“Action3, Action1, Action2” can be selected based on past occurrences ofthe particular order taking on average 33.5 seconds to complete, whereaspast occurrences for all alternative particular orders each take greaterthan 34.0 seconds on average to complete. The shorter average completiontime for the particular order can be due to, for example, a prompt forone of the actions being presented at a time that results in quickeruser response to the prompt, Action1 and/or Action2 being associatedwith a lagging and/or relatively slow server and being preemptivelyfetchable/executable in the particular order (since they are not first),etc.

The training example outputs can optionally be of a fixed dimension thatis determined by, or based on, a maximum number of actions for which themachine learning model is being trained, and can include “null” valuesin training examples that have less than the maximum number of actions.For example, the maximum number of actions can be five, and for atraining example input that includes three actions in a request, dataidentifying the order of the three actions can be included in thetraining example output, and null data can be provided for the remainingtwo actions. As one particular example, the training example outputs canbe a vector of twenty-five values, with each sequential group of fiveindicating the placement of a corresponding one of the actions in theparticular order. For instance, assuming a provided order, in thetraining example input of “Action1, Action2, Action3”, and a particularorder of “Action3, Action1, Action2” the following training exampleoutput can indicate that particular order: [0, 1, 0, 0, 0, |0, 0, 1, 0,0, |1, 0, 0, 0, 0, |null, . . . null, |null, . . . null]. In thepreceding example, each “|” indicates a break between the dictatedplacement corresponding to each action, the first “1” indicates that“Action1” should be 2^(nd) (since it's the second placement in the fiveoptions for “Action1”), the second “1” indicates that “Action2” shouldbe 3^(rd) (since it's the third placement in the five options for“Action2”), the third “1” indicates that “Action3” should be 1^(st)(since it's the first placement in the five options for “Action3”), andthe “nulls” indicate that there are no fourth and fifth actions in thetraining example input.

The machine learning model can be trained utilizing the supervisedtraining examples. After training, the machine learning model can beutilized to predict a particular order for execution of a plurality ofactions of a request, based on identifiers of those actions andoptionally based on contextual value(s). Use of such a machine learningmodel can provide quick resolution of a particular order at run time,and can generalize combinations of actions and/or contextual values thatmay not have appeared in training data. Accordingly, such a machinelearning model is robust to newly added actions and/or newly presentedcombinations of actions. Further, such a machine learning model can,once trained, consume less space than large mappings between variousactions and preferred orders and can be more computationally efficientto utilize than searching such large mappings.

In some implementations, training data for the machine learning model,such as a supervised learning model, can include input data identifyingactions capable of being performed via the automated assistant.Additionally, the training data for the supervised learning model caninclude data characterizing total time for execution of each action ofthose actions identified in the input data. Alternatively, oradditionally, the training data for the supervised learning model caninclude data characterizing latency time and/or estimated latency timeof each action of those actions requested by the user. Alternatively, oradditionally, the training data for the supervised learning model caninclude data characterizing a total amount of time or estimated totalamount of time for all the actions, in a set of requested actions, to beexecuted. In this way, a function and/or model generated according tothe supervised learning can effectively exhibit a correlation betweenthe actions requested to be performed via the automated assistant andone or more temporal aspects of each action, or all of the actions.

An action performed via an automated assistant can have one or moreexecution characteristics, and an execution characteristic of an actioncan affect one or more temporal aspects of the action and/or multipleactions (e.g., a series of actions requested by a user to be performedvia an automated assistant). For instance, an execution characteristiccan characterize one or more operations to be performed during theexecution of an action. As an example, a request for an automatedassistant to perform an action of setting an alarm can cause theautomated assistant to perform an operation of initializing a dialogsession with a user, and the dialog session can be an executioncharacteristic of the action of setting the alarm. Specifically, thedialog session can be initialized in order to provide the user with anopportunity to specify a time for the alarm to go off. Therefore,because the action has an execution characteristic of initializing adialog session, which would take some amount of time to complete, atemporal aspect (e.g., total time to complete the action) of the actioncan be affected. A variety of temporal aspects of the action can beaffected, such as, but not limited to, a total estimated time forexecution of the action, an estimated amount of time for the user to beprovide input for completing the action, an estimated amount of latencybetween a request and initialization of the action, and/or an amount oflatency between initializing the action via a request to a third partyand receiving a response from the third party.

A temporal aspect of an action and/or series of actions can include oneor more time-related properties exhibited by one or more computingdevices before, during, and/or after performance of an action and/orseries of actions by the one or more computing devices. Additionally, oralternatively, a temporal aspect of an action and/or a series of actionscan be any quantifiable value of time characterizing a particularoperation and/or portion of the action and/or series of actions. Forinstance, a request for an automated assistant to perform series ofactions such as, “Assistant, turn on my lights and play my podcast,” canhave a quantifiable amount of latency between actually turning on thelights and playing the podcast, and/or a quantifiable amount of time forcompletion of the actions. Furthermore, the quantifiable amount oflatency, and/or any other temporal aspect, can be different depending onan order in which the actions are performed. For instance, a delaybetween the user providing the request and the automated assistantturning on the lights can be greater when the “play my podcast” actionis initialized before the action of “turning on the lights” isinitialized, at least relative to another order of actions when theaction of “turning on the lights” is initialized before the action of“play my podcast” is initialized.

In some implementations, a trained machine learning model can be used toestimate temporal aspects of a sequence of requested actions. Forinstance, identifiers for a first action, a second action, and a thirdaction can be provided as input to the machine learning model, alongwith an indication of an order of execution for the actions. In responseto receiving the input, the machine learning model can provide an outputthat indicates one or more temporal aspects of the provided order ofexecution for the actions. The application or module tasked withproviding an efficient order of execution for the actions can rearrangethe sequence of actions, and provide a different order for the actionsas input to the machine learning model. In response to receiving inputcorresponding to the different order for the actions, the machinelearning model can provide another indication of one or more othertemporal aspects of the different order for the sequence of actions.This process of estimating temporal aspects of various sequences of theactions can be repeated for all, or at least multiple, variations oforders of execution for the actions. Each respective output from themachine learning model for each respective variation of the order ofexecution can be compared in order to determine the execution order thatprovides the most efficient use of computational resources and/ormitigates any negative features of the corresponding temporal aspects.For instance, when the output of the machine learning model indicates atotal expected amount of latency during execution of the actions, avariation of the order of actions corresponding to the least expectedamount of latency can be selected and provided to the automatedassistant for execution. Alternatively, or additionally, when the outputof the machine learning model indicates a total estimated execution timefor the sequence of actions, a variation of the order of actionscorresponding to the shortest total estimated execution time for thesequence of actions can be selected and provided to the automatedassistant for execution.

For example, as illustrated in FIG. 2 , the user 208 can provide aspoken utterance 202 such as, “Assistant, play my show, set an alarm,and tell me the weather for tomorrow.” The spoken utterance 202 can bereceived by a client device 214, such as a stand-alone speaker device212. The spoken utterance 202 can be converted into audio data by theclient device 214, and transmitted over a network 228 (e.g., theinternet), to a remote computing device 220, such as a server device224. The server device 224, and/or a server automated assistant 226, canprocess the audio data to identify any actions requested by the user 208via the spoken utterance 202. Identifiers for the actions can beprovided, optionally with other data, as an input to the machinelearning model in order to identify an order of execution for theactions. The machine learning model can be stored or otherwiseaccessible at the server device 224 and/or the client device 214.

In response to receiving an input, the machine learning model can beused to generate an output indicating one or more orders of executionfor the actions. In some implementations, the machine learning model canbe used to provide a single order of execution from which the automatedassistant can rely upon in order to initialize performance of therequested actions. Alternatively, the machine learning model can be usedto provide multiple orders of execution, and the automated assistant canselect the order of execution that satisfies a particular criteria. Forinstance, the machine learning model can be used to provide an outputthat indicates one or more orders of execution for the actions, as wellas one more corresponding properties of each respective order ofexecution. For instance, an order of execution provided based on themachine learning model can be provided with a value for total amount ofexecution time, total amount of latency, total memory usage, total CPUusage, and/or any other metric that can be associated with computationalefficiency. The automated assistant can then select a particular orderthat satisfies particular criteria, such as least amount of executiontime, lowest amount of latency, lowest amount of memory usage, leastamount of CPU usage, and/or any other criteria or combination thereof.

When the automated assistant has selected an order of execution based onthe machine learning model, or other operations discussed herein, theautomated assistant can initialize performance of one or more actions.For instance, when the automated assistant has selected an order ofexecution of first providing the weather report, then setting the alarm,and then playing the show, the automated assistant can initialize anoperation of retrieving the weather report via the network 228. When theweather report has been retrieved, a client device 214 can perform anoperation of providing a natural language output 204 corresponding tothe weather report. For instance, the natural language outputcorresponding to the weather report can be, “The weather for tomorrow issunny, with a high of 75 degrees and a low of 66 degrees.”

In some implementations, the automated assistant can cause the weatherreport to be provided by a third-party agent, such as a third partyweather application or module accessible via another computing deviceand/or website. A third party can refer to an entity that provides anapplication, service, device, and/or any other product, and can bedifferent from an entity that provided the automated assistant and/or anoperating system of the client device 214. After the third party agenthas provided the weather report to the automated assistant, the thirdparty agent can provide an indication that one or more tasks assigned tothe third party agent have been completed. In response to receiving theindication from the third party agent, the automated assistant caninitialize performance of an action that is next in the order ofexecution of actions selected by the automated assistant.

In some implementations, a selected order of execution can correspondto, or indicate, an order that the automated assistant should completethe requested actions, rather than initialize the requested actions. Forinstance, although the order of actions requested in FIG. 2 by the user208 are being completed according to a first order, sub tasks associatedwith each action can be completed in a different, second order. Forexample, a machine learning model can indicate the order of completion,and also provide an output indicating an order of subtasks to beperformed. Therefore, in some implementations, the automated assistantcan initialize a first action (e.g., providing the weather report)prioritized in an order of execution of actions, and simultaneously, orshortly thereafter, initialize performance of a subtask (e.g.,downloading and/or caching show data) of a third action in the order ofexecution of actions. As an example, the order of execution for theactions can identify the weather report as a highest priority action tobe completed, but can also designate a subtask or operation, such asdownloading the show, to also be a higher priority than the majority ofother subtasks or operations (e.g., providing a natural language outputrequesting when the alarm should be set, and confirming the setting ofthe alarm), despite the show playback action being last with respect tothe priority for completing the actions. In other words, the automatedassistant can initialize certain subtasks or operations that canmitigate overall latency and/or total estimated time of completion for aseries of requested actions. Additionally, or alternatively, theautomated assistant can delegate one or more subtasks or operations toone or more devices that were not the target device for the spokenutterance 202. For instance, the subtask of downloading the show can beperformed as a background action 230 by the other device 210 concurrentto the automated assistant retrieving the weather report over thenetwork 228 and/or providing the weather report via the client device214.

FIG. 3 illustrates a system 300 for modifying an order of execution fora set of actions requested to be performed via an automated assistant304 in order to eliminate waste of processing and network resources. Theautomated assistant 304 can operate as part of an assistant applicationthat is provided at one or more computing devices, such as a computingdevice 318 and/or a server device 302. A user can interact with theautomated assistant 304 via an assistant interface, which can be amicrophone, a camera, a touch screen display, a user interface, and/orany other apparatus capable of providing an interface between a user andan application. For instance, a user can initialize the automatedassistant 304 by providing a verbal, textual, or a graphical input tothe assistant interface to cause the automated assistant 304 to performa function (e.g., provide data, control a peripheral device, access anagent, generate an input and/or an output, etc.). The computing device318 can include a display device, which can be a display panel thatincludes a touch interface for receiving touch inputs and/or gesturesfor allowing a user to control applications of the computing device 318via the touch interface. In some implementations, computing device 318can lack a display device, thereby providing an audible user interfaceoutput, without providing a graphical user interface output.Furthermore, the computing device 318 can provide a user interface, suchas a microphone, for receiving spoken natural language inputs from auser. In some implementations, the computing device 318 can include atouch interface and can be void of a camera, but can optionally includeone or more other sensors.

The computing device 318 and/or other computing devices 334 can be incommunication with the server device 302 over a network 338, such as theinternet. Additionally, the computing device 318 and the other computingdevices 334 can be in communication with each other over a local areanetwork (LAN), such as a Wi-Fi network. The computing device 318 canoffload computational tasks to the server device 302 in order toconserve computational resources at the computing device 318. Forinstance, the server device 302 can host the automated assistant 304,and computing device 318 can transmit inputs received at one or moreassistant interfaces 320 to the server device 302. However, in someimplementations, the automated assistant 304 can be hosted at thecomputing device 318 as a client automated assistant 322.

In various implementations, all or less than all aspects of theautomated assistant 304 can be implemented on the computing device 318.In some of those implementations, aspects of the automated assistant 304are implemented via the client automated assistant 322 of the computingdevice 318 and interface with the server device 302 that implementsother aspects of the automated assistant 304. The server device 302 canoptionally serve a plurality of users and their associated assistantapplications via multiple threads. In implementations where all or lessthan all aspects of the automated assistant 304 are implemented via aclient automated assistant 322 at the computing device 318, the clientautomated assistant 322 can be an application that is separate from anoperating system of the computing device 318 (e.g., installed “on top”of the operating system) — or can alternatively be implemented directlyby the operating system of the computing device 318 (e.g., considered anapplication of, but integral with, the operating system).

In some implementations, the automated assistant 304 and/or the clientautomated assistant 322 can include an input processing engine 306,which can employ multiple different modules for processing inputs and/oroutputs for the computing device 318 and/or the server device 302. Forinstance, the input processing engine 306 can include a speechprocessing module 308 that can process audio data received at anassistant interface 320 to identify the text embodied in the audio data.The audio data can be transmitted from, for example, the computingdevice 318 to the server device 302 in order to preserve computationalresources at the computing device 318.

The process for converting the audio data to text can include a speechrecognition algorithm, which can employ neural networks, word2vecalgorithms, and/or statistical models for identifying groups of audiodata corresponding to words or phrases. The text converted from theaudio data can parsed by a data parsing module 310 and made available tothe automated assistant as textual data that can be used to generateand/or identify command phrases from the user. In some implementations,output data provided by the data parsing module 310 can be provided to aparameter module 312 to determine whether the user provided an inputthat corresponds to a particular action and/or routine capable of beingperformed by the automated assistant 304 and/or an application or agentthat is capable of being accessed by the automated assistant 304. Forexample, assistant data 316 can be stored at the server device 302and/or the computing device 318, as client data 332, and can includedata that defines one or more actions capable of being performed by theautomated assistant 304 and/or client automated assistant 322, as wellas parameters necessary to perform the actions. A user can specify oneor more values for assigning to one or more parameters of an action tobe performed by the automated assistant 304, at the direction of theautomated assistant 304, and/or by a third-party agent that isaccessible via the automated assistant 304. The third-party agent can beprovided by a party that is different from another party that hasprovided the automated assistant 304.

In some implementations, the system 300 can include a server device 302and/or a computing device 318 that includes one or more features forreordering sequences of requested actions set forth by a user in aspoken utterance. The spoken utterance, such as one in which the userhas requested a series of actions be performed by automated assistant,can be received at an automated assistant interface 320 and convertedinto audio data. The audio data can be processed by the input processingengine 306, which can be provided at the server device 302 and/or thecomputing device 318. The audio data can be converted into text, and/orotherwise processed, to identify each action requested by the user. Insome implementation, audio data that is based on the spoken utterancecan be provided as input to a neural network model, which can provide anoutput indicative of the actions requested by the user, and/or an orderfor the actions.

When the actions have been identified, data characterizing the actionscan be shared with, or otherwise available at the computing device 318,and can be processed by an action classification engine 324. The actionclassification engine can receive data characterizing an action, anddetermine, based on the data, a classification for the action. Forinstance, a request to play a TV series or a song can correspond toclassification referred to as a continuous playback action.Alternatively, or additionally, a request for information from theinternet, such as a weather report or economic news, can correspond to aclassification referred to as a request for information action.Furthermore, or alternatively, a request to change a setting of aparticular device can correspond to a classification referred to as adevice setting classification. In some implementations, one or moredifferent actions can be classified according to one or more differentclassifications, respectively, not limited to those classificationsdisclosed here in.

In some implementations, an action classification engine 324 candetermine the classification for each action requested by the user viathe spoken utterance. In some implementations, an action classificationcan be based on one or more determined execution characteristics of aparticular action. For instance, an action that necessitates furtherdialog between the user and the automated assistant can be classified asa dialog initiating action for at least having a dialog session as anexecution characteristic. Additionally, or alternatively, an action thatnecessitates determining and modifying settings of a local device can beclassified as a request to change a device setting, at least based onthe action having an execution characteristic of causing the automatedassistant to transmit a request to the local device for modifying thedevice settings. Each classification can be communicated to an actionorder engine 326, which can receive data that characterizes theclassification of actions requested by the user and generate an orderfor the actions based at least on the data. For instance, when the userrequests a first action corresponding to continuous playback of music,and a second action corresponding to a request for information from theinternet, the action classification engine 324 can determine that therequest from the user includes a continuous playback action and arequest for information action. These classifications can be provided tothe action order engine 326, which can generate an order for the actionsthat prioritizes the second action, of providing the information fromthe internet, over providing the continuous playback of music.

In some implementations, the action order engine 326 can generate anorder for a set of requested actions based on an action order model 332.The action order model 332 can be one or more neural network modelstrained based on historical user interaction data 336 and/or historicalcommunity interaction data 328, with prior permission from correspondingusers. For instance, the historical user interaction data 336 caninclude data that characterizes interactions between the user and theautomated assistant 304. Such interactions can include those in whichthe user provided a request for multiple actions to be performed andsubsequently provided feedback to the automated assistant 304, and/orsubsequently did not provide feedback to the automated assistant 304.The feedback can include subsequent spoken utterances in which the usercommanded the automated assistant 304 to rearrange an order of executionfor the multiple actions. For instance, the user may have previouslyprovided a spoken utterance such as, “Assistant, play ambient noise andset an alarm for tomorrow.” In response, the automated assistant 304 mayhave initialized playback of the ambient noise prior to initiating adialogue for setting up the alarm, which may have not been preferentialto the user. Therefore, the user may have provided feedback to theautomated assistant 304 in the form of a spoken utterance such as, “No,set the alarm first and then play the ambient noise.” Such feedback canbe used to train the action order model 332, in order that subsequentsimilar requests can be modified according to user preferences learnedover time with permission from the user.

Training can be based on client data 334, which can characterizeoperations of the computing device 318, a context of the computingdevice 318, and/or any other information that can be associated with thecomputing device 318. For instance, the client data 334 can characterizea status of one or more applications 340 of the computing device 318. Inthis way, the action order model 332 can learn preferences of the userbased on feedback from the user, as well as any other information thatmay have been relevant when the user provided the feedback. In someimplementations, an order of actions generated by the action order model332 can be based on a context of the computing device 318. For instance,GPS data provided by the computing device 318 can indicate that the userhas just arrived home, and other data can indicate that, subsequently,the user provided a spoken utterance such as, “Assistant, play my loungeplaylist and set my alarm.” In response, rather than initiating adialogue session between the user and the automated assistant in orderto set a wake alarm, the automated assistant can initialize playback ofthe lounge music playlist and, in the background, turn on a homesecurity alarm at the home of the user. This resulting order of actionscan be different, if the user is determined to have been home for atleast a threshold amount of time, which can be determined by the actionorder model 332, and can be based on a window of time in which the usertypically lies down in bed to go to sleep. For example, if the user isdetermined to be home and in their room within a window of time that theuser typically lies down in bed to go to sleep, and the user providesthe spoken utterance, “Assistant, play my lounge music playlist and setmy alarm,” the automated assistant can initialize a dialogue for settinga wake alarm, and then upon completion of setting to wake alarm,initialize playback of the lounge music playlist.

In some implementations, one or more action order models 332 can betrained according to historical user interaction data 336, which cancorrespond to a user of the computing device 318, and according tohistorical community interaction data 328, which can correspond to oneor more other users of an automated assistant. The action order model332 can be trained and configured such that the action order model 332can receive, as inputs, classifications of actions requested by the useraccording to a first order, and provide, as output, a second order forthe actions requested by the user. In some implementations, thehistorical community interaction data 328 can characterize interactionsbetween users and their respective automated assistants, and canspecifically identify those interactions in which the users requesteddifferent classifications of actions be performed. Alternatively, oradditionally, the historical community interaction data 328 can alsocharacterize conditional statements made by users when requesting thatcertain classifications of actions be performed. In this way, the actionorder model 332 can recognize trends in user preferences for orders ofexecution for particular classifications of actions, at least comparedto other orders of execution for the particular classifications ofactions.

For example, training of the action order model 332 can reflect apreference of a majority of users to have a request for informationaction be completed before a continuous playback action. The preferenceof the majority of users can be identified by processing the historicalcommunity interaction data 328 and determining that a majority of timethat the users requested a request for information action and acontinuous playback action in the same spoken utterance, the majority ofusers also included the conditional statement, “and then.” For instance,a majority of users, or at least multiple users, may have provided aspoken utterance such as, “Assistant, tell me the weather for today andthen play my morning playlist.” Because multiple users provided theconditional statement with these two different classifications ofactions, this conditional statement can influence the training of theaction order model 332. As a result, when the user of the computingdevice 318 provides a similar spoken utterance requesting each of thetwo different classifications of actions be performed, the automatedassistant 304 can use the action order model 332 to ensure that theorder of execution of the actions is performed according to thepreferences of users corresponding to the historical communityinteraction data 328. However, should the user provide a conditionalstatement within a spoken utterance, the conditional statement can takepriority as a rule for ordering the execution of actions over an orderof actions determined from the action order model 332.

In some implementations, an order of actions can be determined based ona number of available devices accessible to the automated assistant 304.For instance, the action order model 332 can receive, as input,identifiers for computing devices that are: connected to a local networkwith the computing device 318, accessible via the client automatedassistant 322, and/or otherwise are associated with the computing device318. Because some actions requested by user can be performed at one ormore different computer devices, the automated assistant 304 candelegate certain actions to particular computer devices in a particularorder based on which computing devices are available. For example, auser can have a smart thermostat, smart light bulbs, and an automatedassistant device within their home. Furthermore, the user can provide aspoken utterance that includes a request to perform multiple actions,such as, for example, “Assistant, turn up the thermostat, turn down thelights, play my night time playlist, and order a food delivery.”

Audio data corresponding to the spoken utterance can be processed todetermine classifications for the aforementioned actions that have beenrequested by the user. Identifiers for the classifications, as well asidentifiers for the smart thermostat, smart light bulbs, and theassistant device can be provided as input to the action order model 332.The action order model 332 can provide, as output, a determined order ofactions for the automated assistant 304 to follow, and/or one or moreorder of actions for each particular device in the home to follow. Forinstance, the automated assistant 304 can delegate the changing of thelights to the smart light bulbs, the modification to the temperature ofthe home to the thermostat, and provide an order of execution for theremaining actions to the automated assistant device. Specifically, theorder of actions for the automated assistant device can prioritizeordering the food delivery over playing the night time playlist.

This order of actions for the automated assistant device can be based onhistorical user interaction data 336, historical community interactiondata 328, and/or classification preferences for the automated assistant304. For example, the automated assistant 304 can prioritize dialogueinitiating actions, such as ordering food delivery, over continuousplayback actions, such as playing a nighttime playlist. As a result,despite the automated assistant 304 having an order of actions set forthe automated assistant device, the other requested actions would besimultaneously performed at the other respective devices. In otherwords, a first action in the order of actions set for the automatedassistant device would be performed at the same time as an action setfor the smart light bulbs and an action set for the thermostat. In thisway, the automated assistant 304 and/or the action order model 332 cangenerate action orders for multiple different devices to concurrentlyexecute.

FIG. 4 illustrates a method 400 for determining an order of actions foran automated assistant to perform, at least according to a trainedmachine learning model. The method 400 can be performed by one or morecomputing devices, applications, and/or any other apparatus or modulecapable of interacting with an automated assistant. The method 400 caninclude an operation 402 of determining whether a spoken utterance hasbeen detected. The spoken utterance can be provided by a user to anautomated assistant interface of the computing device, and the spokenutterance can be converted into data that is transferable betweendevices. For instance, when the automated assistant interface is as amicrophone, the spoken utterance can be converted into audio data thatis then transmitted to a server device for further processing. In someimplementations, a determination of whether a spoken utterance wasprovided can include determining whether the user intended to invoke theautomated assistant for providing a response or otherwise performing aparticular action. The operation 402 can be determined periodically,and, when a spoken utterance is detected, the method 400 can proceed tooperation 404.

The operation 404 can include identifying actions requested by the uservia the spoken utterance. The user can cause the spoken utterance toembody one or more requests for one or more actions to be performed bythe automated assistant. When data corresponding to the spoken utteranceis processed, the data can be converted to text, parsed, and furtherprocessed to determine any actions that the user is requesting beperformed. In some implementations, data generated based on the spokenutterance can be processed, using a machine learning model, to generateoutput data then identifies one or more actions requested by the uservia the spoken utterance. The machine learning model can be trainedusing data that has been generated since the user has been interactingwith the automated assistant and/or data generated by a provider of theautomated assistant.

The method 400 can further include an optional operation 406 ofaccessing contextual data associated with the spoken utterance. Thecontextual data can be based on operations of one or more computingdevices associated with the user, the automated assistant, and/or anyother device(s) accessible to the user. For instance, the contextualdata can identify an operating status of one or more devices that areaccessible to the automated assistant. Alternatively, or additionally,the contextual data can characterize environmental characteristicsassociated with an environment of the user, such as when and where theuser provided the spoken utterance. Alternatively, or additionally, thecontextual data can characterize a schedule of the user, occupancy oflocation where the user is, a time of day when the user provided thespoken utterance, one or more previous spoken utterances provided by theuser or another person, scheduled actions to be performed by one or moredevices when the user provided the spoken utterance, and/or any otherinformation that can be associated with a context of a user.

The method 400 can further include an operation 408 of determiningwhether an explicit order for the actions was requested in the spokenutterance. An explicit order for the actions can be requested by a userwho provides explicit statements indicating an order for the actions tobe executed. For instance, within a spoken utterance provided by theuser, the user can request that a first action be executed and then asecond action be executed. The conditional statement “and then” can beinterpreted as an explicit request for contingency of performance of thesecond action to be based on completion of the first action, and/or atleast initialization of the first action. If the user has not providedan explicit order for the requested actions, the method 400 can proceedto operation 410.

The operation 410 can include providing data, characterizing theidentified actions and, optionally, contextual data, as input to atrained machine learning model. The input can be processed using thetrained machine learning model to generate output that characterizes anorder for an execution of the actions requested by the user in thespoken utterance. In other words, although the actions may be set forthin the spoken utterance in a first order, the output, generated usingthe trained machine learning model, can re-arrange the order so that asecond order of execution is performed at the direction of the automatedassistant. Therefore, in response to using the trained machine learningmodel to process the input that characterizes the identified actionsand, optionally, the contextual data, output data can be generated thatcharacterizes an order for executing the actions.

The method 400 can further include an operation 412 of determining theorder of execution for the actions based on output generated using thetrained machine learning model. The order of execution determined usingthe trained machine learning model can be generated in order to reducelatency and therefore eliminate waste of computational resources, suchas memory and processing bandwidth. Furthermore, by reducing latencybetween receiving the spoken utterance and executing the actions,network bandwidth can be preserved, as actions depending onresponsiveness of networks can be prioritized according to availabilityof network resources. For example, based on the training of the machinelearning model, the machine learning model can be trained to rankcertain actions that exhibit the most network latency lower than thoseaction that have historically been performed with the least amount ofnetwork latency. Such training of the machine learning model can bebased on data characterizing interactions between the user, who providedthe spoken utterance, and the automated assistant. Additionally, oralternatively, the training of the machine learning model can be basedon data characterizing interactions between one or more other users andtheir own respective automated assistants. In this way, the trainedmachine learning model can indicate whether certain actions that rely onthird party providers or third party agents have resulted in morelatency or less latency when other users have requested such actions beexecuted.

In some implementations, the method 400 can include an optionaloperation 414 of training a machine learning model according to, orotherwise based on, the explicit order provided by the user and/oroptionally any contextual data that was used to determine the order. Inother words, when the user has provided an explicit order for theactions, that explicit order can be characterized as data that is usedwhen further training the machine learning model.

The method 400 can further include an operation 416 of causing executionof the actions according to the determined order. For instance, theautomated assistant can initialize a web query, when the first actionindicated in the order is a request for information. Alternatively, theautomated assistant can cause a third party device to adjust anoperational setting when the first action in the determined orderincludes a change to a device setting. In some implementations, when theorder is explicitly provided by the user, the method 400 can proceedfrom the operation 408 and/or the operation 414 to the operation 416. Inthis way, the automated assistant can rely on an explicit order when theuser has provided the explicit order, and a separately determined order,based on output generated using the machine learning model, when theuser has not provided an explicit order for the requested actions.

In some implementations, the method 400 include an operation 418 ofdetermining whether feedback has been received regarding the order ofexecution of the actions. Feedback can include one or more inputsprovided by the user before, during, and/or after execution of theactions. For instance, when the automated assistant has completedexecuting all the actions requested by the user according to aparticular order, the user can provide a spoken utterance such as,“Assistant, next time set my alarm first.” The aforementioned spokenutterance can be processed by the automated assistant, determined to befeedback, and embodied in training data, which can be utilized intraining the machine learning model. In some implementations, feedbackcan be provided by the user during execution of the action. Forinstance, the user can provide a spoken utterance such as, “Assistant,wait to play my music until I have finished ordering food.” In response,the automated assistant can modify any ongoing and/or pending actionsaccording to the feedback provided by the user. Furthermore, thefeedback can be characterized by data which can be provided as trainingdata to further train the machine learning model, in order to furtheradapt the machine learning model to provide more suitable orders forsequences of requested actions. When feedback is provided by the user,the method 400 can proceed to an operation 420 of training the machinelearning model according to the feedback. When feedback is not receivedfrom the user, at least with respect to the execution of the actions,the method 400 can proceed back to the operation 402 for detectingwhether any other spoken utterances have been received by the automatedassistant.

FIG. 5 illustrates a method 500 for arranging a sequence of actions,requested to be performed by an automated assistant, according to aclassification of the actions. The method 500 can be performed by one ormore computing devices, applications, and/or any other apparatus ormodule capable of interacting with an automated assistant. The method500 can include an operation 502 of determining whether a spokenutterance has been detected. The spoken utterance can be detected atcomputing device that provides access to an automated assistant, and/ora server device that is in communication with a computing device fromwhich an automated assistant is accessible. The spoken utterance can beprovided by user to an automated assistant interface, such as amicrophone, and can include natural language such as, “Assistant, orderfood delivery, turn down the lights, and tell me what is on TV tonight.”

In response to determining that a spoken utterance has been detected,the method 500 can proceed to an operation 504 of identifying one ormore actions requested by the user via the spoken utterance.Specifically, audio data that embodies, and/or otherwise characterizes,the spoken utterance can be processed in order to determine the naturallanguage content of the spoken utterance. The natural language contentcan be parsed and further processed to identify one or more actionsrequested by the user via the spoken utterance. For instance, when audiodata corresponding to the aforementioned spoken utterance is processed,a food delivery action, a light settings action, and an actionrequesting a television schedule can be identified.

In some implementations, the method 500 can include an optionallyoperation 506 of determining whether a conditional statement wasincluded in the spoken utterance. A conditional statement can be aphrase or word provided by the user indicating that one or more of therequested actions are conditioned upon something else occurring. Forinstance, the user can provide a phrase describing a temporalcontingency of an action, such as a contingency that relies oncompletion of another action. Alternatively, or additionally, the usercan provide a word or phrase that describes a condition that can besatisfied based on a context of the user, status of one or more devices,application data associated with the user, and/or any other data thatcan be relevant to an action being performed by an automated assistant.

In some implementations, when the spoken utterance does or does notinclude one or more conditional statements, the method 500 can proceedto an operation 508. The operation 508 can include determining aclassification of each action of the identified actions. Theclassifications can be determined based on an output of a textprocessing module, which can provide textual data that reflects thenatural language context of the spoken utterance. Alternatively, oradditionally, audio data or other data that is based the spokenutterance can be provided to a trained machine learning model, and anoutput of the trained machine learning model can be used to determineeach classification of each action requested via the spoken utterance.When the classifications have been identified, the method 500 canproceed to the operation 510.

The operation 510 can include determining an order of execution for theidentified actions. Determining the order of execution for theidentified actions can be based at least in part on a classificationthat each action of the identified actions. For instance, an action ofmultiple actions requested by the user in a spoken utterance can be arequest for continuous media playback. Such a classification for anaction can have a lower priority relative to an action for providinginformation (e.g., providing a weather report). Alternatively, oradditionally, an action classified as a request to change a devicesetting can have a higher priority relative to a continuous mediaplayback classification, but have a lower priority relative to a requestfor info classification. In some implementations, determining the orderof execution for the identified actions can be performed at least basedon an output of a trained machine learning model. The trained machinelearning model can be adapted to provide an output that is indicative ofa suitable order of operations. The trained machine learning model canbe trained using data that characterizes interactions between the userand the automated assistant. Alternatively, or additionally, the trainedmachine learning model can be trained using data that characterizesinteractions between multiple different users not directly related tothe user that provided the spoken utterance.

The method 500 further include an operation 514 of causing execution ofthe actions according to the determined order. The determined order canbe explicitly provided by the user, at least when the user is determinedto have provided conditional statements according to operation 512.Alternatively, or additionally, the order of execution for theidentified actions can be based on an output of one or more machinelearning models, contextual data characterizing a context of the user,and/or any other data from which a priority of an action in a series ofactions can be based.

In some implementations, the method 500 can optionally include anoperation 516 determining whether feedback regarding the execution orderhas been received. The feedback, as discussed herein, can based onanother spoken utterance provided by the user before, during, and/orafter execution of the identified actions. The feedback, for example,can characterize a preference of the user for a particularclassification of action to have a priority that is higher than anotherclassification of an action. When feedback is determined to have beenreceived before, during, and/or after execution of the identifiedactions, the method 500 can proceeded to an operation 518 of trainingthe machine learning model according to the feedback. In other words,the feedback can be received from the user and processed in order togenerate training data, which can be provided to a machine learningmodel, in order to update the machine learning model according topreferences of one or more users. In this way, computational resourcescan be preserved, as the user would not have to repeatedly provide thesame feedback. Rather, preferences related to the order of execution canbe learned over time so that feedback from the user would need to beprovided less overtime. Certain computational resources, such as networkbandwidth and memory, can be preserved when a computing device isprocessing spoken utterances less frequently. Whether feedback has beenprovided by a user or not, the method 500 can proceed back to theoperation 502 of determining whether a spoken utterance has beendetected. In this way, the method 500 allows for the continual learningof user preferences while also eliminating wasteful processing andunnecessary network transmissions that can occur when a user mustrepeatedly correct there request or otherwise provide feedback to theautomated assistant regarding their previous requests.

FIG. 6 is a block diagram of an example computer system 610. Computersystem 610 typically includes at least one processor 614 whichcommunicates with a number of peripheral devices via bus subsystem 612.These peripheral devices may include a storage subsystem 624, including,for example, a memory 625 and a file storage subsystem 626, userinterface output devices 620, user interface input devices 622, and anetwork interface subsystem 616. The input and output devices allow userinteraction with computer system 610. Network interface subsystem 616provides an interface to outside networks and is coupled tocorresponding interface devices in other computer systems.

User interface input devices 622 may include a keyboard, pointingdevices such as a mouse, trackball, touchpad, or graphics tablet, ascanner, a touchscreen incorporated into the display, audio inputdevices such as voice recognition systems, microphones, and/or othertypes of input devices. In general, use of the term “input device” isintended to include all possible types of devices and ways to inputinformation into computer system 610 or onto a communication network.

User interface output devices 620 may include a display subsystem, aprinter, a fax machine, or non-visual displays such as audio outputdevices. The display subsystem may include a cathode ray tube (CRT), aflat-panel device such as a liquid crystal display (LCD), a projectiondevice, or some other mechanism for creating a visible image. Thedisplay subsystem may also provide non-visual display such as via audiooutput devices. In general, use of the term “output device” is intendedto include all possible types of devices and ways to output informationfrom computer system 610 to the user or to another machine or computersystem.

Storage subsystem 624 stores programming and data constructs thatprovide the functionality of some or all of the modules describedherein. For example, the storage subsystem 624 may include the logic toperform selected aspects of method 400, method 500, and/or to implementone or more of client device 124, client automated assistant 126, serverdevice 120, server automated assistant 122, client device 214, clientautomated assistant 216, server device 224, server automated assistant226, server device 302, computing device 318, automated assistant 304,client automated assistant 322, action classification engine 324, actionorder engine 326, action execution engine 330, and/or action order model332.

These software modules are generally executed by processor 614 alone orin combination with other processors. Memory 625 used in the storagesubsystem 624 can include a number of memories including a main randomaccess memory (RAM) 630 for storage of instructions and data duringprogram execution and a read only memory (ROM) 632 in which fixedinstructions are stored. A file storage subsystem 626 can providepersistent storage for program and data files, and may include a harddisk drive, a floppy disk drive along with associated removable media, aCD-ROM drive, an optical drive, or removable media cartridges. Themodules implementing the functionality of certain implementations may bestored by file storage subsystem 626 in the storage subsystem 624, or inother machines accessible by the processor(s) 614.

Bus subsystem 612 provides a mechanism for letting the variouscomponents and subsystems of computer system 610 communicate with eachother as intended. Although bus subsystem 612 is shown schematically asa single bus, alternative implementations of the bus subsystem may usemultiple busses.

Computer system 610 can be of varying types including a workstation,server, computing cluster, blade server, server farm, or any other dataprocessing system or computing device. Due to the ever-changing natureof computers and networks, the description of computer system 610depicted in FIG. 6 is intended only as a specific example for purposesof illustrating some implementations. Many other configurations ofcomputer system 610 are possible having more or fewer components thanthe computer system depicted in FIG. 6 .

In situations in which the systems described herein collect personalinformation about users (or as often referred to herein,“participants”), or may make use of personal information, the users maybe provided with an opportunity to control whether programs or featurescollect user information (e.g., information about a user's socialnetwork, social actions or activities, profession, a user's preferences,or a user's current geographic location), or to control whether and/orhow to receive content from the content server that may be more relevantto the user. Also, certain data may be treated in one or more waysbefore it is stored or used, so that personal identifiable informationis removed. For example, a user's identity may be treated so that nopersonal identifiable information can be determined for the user, or auser's geographic location may be generalized where geographic locationinformation is obtained (such as to a city, ZIP code, or state level),so that a particular geographic location of a user cannot be determined.Thus, the user may have control over how information is collected aboutthe user and/or used.

While several implementations have been described and illustratedherein, a variety of other means and/or structures for performing thefunction and/or obtaining the results and/or one or more of theadvantages described herein may be utilized, and each of such variationsand/or modifications is deemed to be within the scope of theimplementations described herein. More generally, all parameters,dimensions, materials, and configurations described herein are meant tobe exemplary and that the actual parameters, dimensions, materials,and/or configurations will depend upon the specific application orapplications for which the teachings is/are used. Those skilled in theart will recognize, or be able to ascertain using no more than routineexperimentation, many equivalents to the specific implementationsdescribed herein. It is, therefore, to be understood that the foregoingimplementations are presented by way of example only and that, withinthe scope of the appended claims and equivalents thereto,implementations may be practiced otherwise than as specificallydescribed and claimed. Implementations of the present disclosure aredirected to each individual feature, system, article, material, kit,and/or method described herein. In addition, any combination of two ormore such features, systems, articles, materials, kits, and/or methods,if such features, systems, articles, materials, kits, and/or methods arenot mutually inconsistent, is included within the scope of the presentdisclosure.

We claim:
 1. A method implemented by one or more processors, the methodcomprising: processing audio data that that characterizes a spokenutterance from a user requesting that an automated assistant performmultiple actions, wherein the multiple actions are characterized by theuser in the spoken utterance according a first order of actions;determining, based on processing the audio data, an actionclassification for each action of the multiple actions requested by theuser, wherein a particular action classification of a particular actionof the multiple actions includes a dialog initiating action that isexecuted according to at least one parameter; determining whether avalue for the at least one parameter is specified by the user in thespoken utterance; and when the value for the at least one parameter wasunspecified in the spoken utterance: generating a second order ofactions for the multiple actions, wherein the second order of actionscauses the dialog initiating action to have a reduced priority relativeto another action of the multiple actions based on the value for atleast one parameter being unspecified in the spoken utterance.
 2. Themethod of claim 1, further comprising: when the at least one parameteris specified in the spoken utterance: generating a third order ofactions for the multiple actions, wherein the third order of actionscauses the dialog initiating action to have priority that is unaffectedby the user specifying the value for at least one parameter in thespoken utterance.
 3. The method of claim 2, wherein determining theaction classification includes determining, each action of the multipleactions, whether the action corresponds to a continuous playback ofmedia, and the method further comprises: when a requested action of themultiple actions includes a continuous playback of media action:generating the second order of actions or the third order of actions toprioritize the requested action such that the requested action isexecuted later in time relative to the other action of the multipleactions.
 4. The method of claim 1, further comprising: determiningwhether the user explicitly specified a temporal condition for executingat least one action of the multiple actions; and when the user hasexplicitly specified the temporal condition for executing the at leastone action of the multiple actions: generating the second order ofactions or the third order of actions to comply with the temporalcondition for executing at least one action of the multiple actions. 5.The method of claim 4, wherein the automated assistant is configured tooverride the second order of actions or the third order of actionsaccording to the temporal condition when the particular action is the atleast one action explicitly requested by the user to be affected by thetemporal condition.
 6. A system comprising: memory storing instructions;one or more processors operable to execute the instructions to:processing audio data that that characterizes a spoken utterance from auser requesting that an automated assistant perform multiple actions,wherein the multiple actions are characterized by the user in the spokenutterance according a first order of actions; determining, based onprocessing the audio data, an action classification for each action ofthe multiple actions requested by the user, wherein a particular actionclassification of a particular action of the multiple actions includes adialog initiating action that is executed according to at least oneparameter; determining whether a value for the at least one parameter isspecified by the user in the spoken utterance; and when the value forthe at least one parameter was unspecified in the spoken utterance:generating a second order of actions for the multiple actions, whereinthe second order of actions causes the dialog initiating action to havea reduced priority relative to another action of the multiple actionsbased on the value for at least one parameter being unspecified in thespoken utterance.
 7. The system of claim 6, wherein the instructionsfurther include: when the at least one parameter is specified in thespoken utterance: generating a third order of actions for the multipleactions, wherein the third order of actions causes the dialog initiatingaction to have priority that is unaffected by the user specifying thevalue for at least one parameter in the spoken utterance.
 8. The systemof claim 7, wherein the instructions to determine the actionclassification further include determining, each action of the multipleactions, whether the action corresponds to a continuous playback ofmedia, and the method further comprises: when a requested action of themultiple actions includes a continuous playback of media action:generating the second order of actions or the third order of actions toprioritize the requested action such that the requested action isexecuted later in time relative to the other action of the multipleactions.
 9. The system of claim 6, wherein the instructions furtherinclude: determining whether the user explicitly specified a temporalcondition for executing at least one action of the multiple actions; andwhen the user has explicitly specified the temporal condition forexecuting the at least one action of the multiple actions: generatingthe second order of actions or the third order of actions to comply withthe temporal condition for executing at least one action of the multipleactions.
 10. The system of claim 9, wherein the automated assistant isconfigured to override the second order of actions or the third order ofactions according to the temporal condition when the particular actionis the at least one action explicitly requested by the user to beaffected by the temporal condition.
 11. A non-transitory computerreadable storage medium configured to store instructions that, whenexecuted by one or more processors, causing the one or more processorsto perform operations that include: processing audio data that thatcharacterizes a spoken utterance from a user requesting that anautomated assistant perform multiple actions, wherein the multipleactions are characterized by the user in the spoken utterance accordinga first order of actions; determining, based on processing the audiodata, an action classification for each action of the multiple actionsrequested by the user, wherein a particular action classification of aparticular action of the multiple actions includes a dialog initiatingaction that is executed according to at least one parameter; determiningwhether a value for the at least one parameter is specified by the userin the spoken utterance; and when the value for the at least oneparameter was unspecified in the spoken utterance: generating a secondorder of actions for the multiple actions, wherein the second order ofactions causes the dialog initiating action to have a reduced priorityrelative to another action of the multiple actions based on the valuefor at least one parameter being unspecified in the spoken utterance.12. The non-transitory computer readable storage medium of claim 11,wherein the operations further include: when the at least one parameteris specified in the spoken utterance: generating a third order ofactions for the multiple actions, wherein the third order of actionscauses the dialog initiating action to have priority that is unaffectedby the user specifying the value for at least one parameter in thespoken utterance.
 13. The non-transitory computer readable storagemedium of claim 12, wherein the instructions to determine the actionclassification further include determining, each action of the multipleactions, whether the action corresponds to a continuous playback ofmedia, and the operations further include: when a requested action ofthe multiple actions includes a continuous playback of media action:generating the second order of actions or the third order of actions toprioritize the requested action such that the requested action isexecuted later in time relative to the other action of the multipleactions.
 14. The non-transitory computer readable storage medium ofclaim 11, wherein the operations further include: determining whetherthe user explicitly specified a temporal condition for executing atleast one action of the multiple actions; and when the user hasexplicitly specified the temporal condition for executing the at leastone action of the multiple actions: generating the second order ofactions or the third order of actions to comply with the temporalcondition for executing at least one action of the multiple actions. 15.The non-transitory computer readable storage medium of claim 11, whereinthe automated assistant is configured to override the second order ofactions or the third order of actions according to the temporalcondition when the particular action is the at least one actionexplicitly requested by the user to be affected by the temporalcondition.